<?php
namespace yan\xss_sql_filter\utils;
use Yii;
class MyValidator{
    
    /**
     * ^ 表示字符串的开始
     * [a-zA-Z\p{Han} ]* 表示匹配任意数量的中文、英文字母或空格
     * \p{Han} 是一个Unicode属性，用来匹配所有的中文字符
     * * 表示匹配前面的字符类0次或多次
     * $ 表示字符串的结束
     * /u 修饰符表示使用UTF-8进行正则表达式匹配
     */
    public static function isEnCnName($string){
        // $pattern = '/^[\x{4e00}-\x{9fa5}a-zA-Z\s]+$/u';
        $pattern = '/^[a-zA-Z\p{Han} ]*$/u';
        $flag = preg_match($pattern, $string, $matches);
        if ($flag) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * ^ 表示字符串的开始
     * [a-zA-Z ]* 表示匹配任意数量的英文字母或空格
     * * 表示匹配前面的字符类0次或多次
     * $ 表示字符串的结束
     * /u 修饰符表示使用UTF-8进行正则表达式匹配
     * */
    public static function isEnName($string){
        $pattern = '/^[a-zA-Z ]*$/u';
        $flag = preg_match($pattern, $string, $matches);
        if ($flag) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * ^ 表示字符串的开始
     * \p{Han} 是一个Unicode属性，用来匹配所有的中文字符
     * * 表示匹配前面的字符类0次或多次
     * $ 表示字符串的结束
     * /u 修饰符表示使用UTF-8进行正则表达式匹配
     * */
    public static function isCnName($string){
        $pattern = '/^[\p{Han} ]*$/u';
        $flag = preg_match($pattern, $string, $matches);
        if ($flag) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 只能字母空格和中文
     */
    public static function isNornalName($string){
        // $pattern = '/^[\x{4e00}-\x{9fa5}a-zA-Z\s]+$/u';
        $pattern = '/^[a-zA-Z\p{Han}0-9 ]*$/u';
        $flag = preg_match($pattern, $string, $matches);
        if ($flag) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 數字
     */
    public static function isDigit($string){
        $pattern = '/^[0-9]*$/u';
        $flag = preg_match($pattern, $string, $matches);
        if ($flag) {
            return true;
        } else {
            return false;
        }
    }
    /**
     * 特殊符號檢查
     * */
    public static function hasSpecialChars($string){
        // 定义特殊符号的正则表达式
        $pattern = '/[\'^£$%&*()}{@#~?><>,|=_+¬-]/';
            
        if (preg_match($pattern, $string)) {
            return true; // 包含特殊符号
        } else {
            return false; // 不包含特殊符号
        }
    }
    /**
     * 以第一個英文開頭後面為數字
     * */
    public static function isHKIDNumber($string){
        $pattern = '/^[a-zA-Z][0-9]*$/u';
            
        if (preg_match($pattern, $string)) {
            return true; // 包含特殊符号
        } else {
            return false; // 不包含特殊符号
        }
    }
    /**
     * 只允許數字 英文和空格
     * */
    public static function allowNumberChar($string){
        $pattern = '/[a-zA-Z 0-9]*$/u';
            
        if (!preg_match($pattern, $string)) {
            return true;
        }
        return false;
    }
}